
/**
 * 蓝牙公共数据
 */
export default {
  state: {
    connectedDevice: {
      name: '',
      deviceId: '',
      serviceId: '',
      characteristicId: ''
    },
    // 已读取的索引（一条记录分多次才能读完）
    readIndex: 0,
    // 有多少条记录
    recordIndex: 0,
    timer: {
      timerRecord: null, // 读取记录时开启的定时器
      timerRecordData: null, // 分多次读取单条记录时开启的定时器
      timerParse: null, // 解析记录时开启的定时器
    },
    isReadingRecordData: false, // 是否在读单条记录中的部分数据
  },
  mutations: {
    /**
     * 设置连接设备的名称
     * @param state 仓库数据
     * @param name 设备名称
     */
    setConnectedDeviceName(state, name) {
      state.connectedDevice.name = name;
    },
    /**
     * 获取连接设备的名称
     * @param state 仓库数据
     * @returns {string|*} 连接设备的名称
     */
    getConnectedDeviceName(state) {
      return state.connectedDevice.name;
    },
    /**
     * 设置连接设备的设备id
     * @param state 仓库数据
     * @param deviceId 设备id
     */
    setConnectedDeviceId(state, deviceId) {
      state.connectedDevice.deviceId = deviceId;
    },
    /**
     * 获取连接设备的设备id
     * @param state 仓库数据
     * @returns {string|*} 连接设备的设备id
     */
    getConnectedDeviceId(state) {
      return state.connectedDevice.deviceId;
    },
    /**
     * 设置连接设备的服务id
     * @param state 仓库数据
     * @param serviceId 服务id
     */
    setConnectedServiceId(state, serviceId) {
      state.connectedDevice.serviceId = serviceId;
    },
    /**
     * 获取连接设备的服务id
     * @param state 仓库数据
     * @returns {string|*} 连接设备的服务id
     */
    getConnectedServiceId(state) {
      return state.connectedDevice.serviceId;
    },
    /**
     * 设置连接设备的特征id
     * @param state 仓库数据
     * @param characteristicId 特征id
     */
    setConnectedCharacteristicId(state, characteristicId) {
      state.connectedDevice.characteristicId = characteristicId;
    },
    /**
     * 获取连接设备的特征id
     * @param state 仓库数据
     * @returns {string|*} 连接设备的特征id
     */
    getConnectedCharacteristicId(state) {
      return state.connectedDevice.characteristicId;
    },
    /**
     * 统一设置连接设备
     * @param state 仓库数据
     * @param device 设备信息
     */
    setConnectedDevice(state, device) {
      state.connectedDevice = device;
    },
    /**
     * 获取连接设备的所有信息
     * @param state 仓库数据
     * @returns {*} 连接设备的所有信息
     */
    getConnectedDevice(state) {
      return state.connectedDevice;
    },
    /**
     * 清空连接设备信息
     * @param state 仓库数据
     */
    clearConnectedDevice(state) {
      state.connectedDevice = {
        name: '',
        deviceId: '',
        serviceId: '',
        characteristicId: ''
      }
    },
    /**
     * 断开设备连接
     */
    disconnectDevice(state) {
      console.log("======================");
      let deviceId = state.connectedDevice.deviceId
      uni.closeBLEConnection({
        deviceId,
        success: res => {
          this.commit('clearConnectedDevice');
          console.log(`已断开设备id为${deviceId}设备的连接`);
          uni.closeBluetoothAdapter({
            success: res1 => {
              console.log(res1)
            }
          })
        }
      });
    },
    /**
     * 设置readCount
     * @param state
     * @param readIndex
     */
    setReadIndex(state, readIndex) {
      state.readIndex = readIndex;
    },
    /**
     * 获取readIndex
     * @param state
     * @return {number|*}
     */
    getReadIndex(state) {
      return state.readIndex;
    },
    /**
     * 自增readIndex
     * @param state
     */
    incrementReadIndex(state) {
      state.readIndex += 1;
    },
    /**
     * 置readIndex为0
     * @param state
     */
    clearReadIndex(state) {
      console.log("clearReadIndex");
      state.readIndex = 0;
    }, 
    /**
     * 设置recordIndex
     * @param state
     * @param recordIndex
     */
    setRecordIndex(state, recordIndex) {
      console.log("setRecordIndex", recordIndex);
      state.recordIndex = recordIndex;
    },
    /**
     * 获取recordIndex
     * @param state
     * @return {number|*}
     */
    getRecordIndex(state) {
      return state.recordIndex;
    },
    /**
     * 自增recordIndex
     * @param state
     */
    incrementRecordIndex(state) {
      console.log("incrementRecordIndex");
      state.recordIndex += 1;
    },
    /**
     * 置recordIndex为0
     * @param state
     */
    clearRecordIndex(state) {
      console.log("clearRecordIndex");
      state.recordIndex = 0;
    },
    /**
     * 设置读取记录的定时器
     * @param state
     * @param timer
     */
    setTimerRecord(state, timer) {
      state.timer.timerRecord = timer;
    },
    /**
     * 设置读取记录中数据的定时器
     * @param state
     * @param timer
     */
    setTimerRecordData(state, timer) {
      state.timer.timerRecordData = timer;
    },
    /**
     * 设置解析记录的定时器
     * @param state
     * @param timer
     */
    setTimerParse(state, timer) {
      state.timer.timerParse = timer;
    },
    /**
     * 停掉所有的定时器
     * @param state
     */
    stopAllTimer(state) {
      if (state.timer.timerRecord) {
        clearInterval(state.timer.timerRecord)
      }
      if (state.timer.timerRecordData) {
        clearInterval(state.timer.timerRecordData)
      }
      if (state.timer.timerParse){
        clearInterval(state.timer.timerParse)
      }
    },
    /**
     * 将isReadRecordData设置为true，表示正在读取数据
     * @param state
     */
    setReadRecordDataTrue(state) {
      state.isReadingRecordData = true;
    },
    /**
     * 将isReadRecordData设置为false，表示数据读取已经结束
     * @param state
     */
    setReadRecordDataFalse(state) {
      state.isReadingRecordData = false;
    }
  }
}